S — 單一職責原則 (Single Responsibility) 👈 現在在這裡 👈
一個角色只做一件事。
O — 開放封閉原則 (Open/Closed)
可以增加功能,不用大改原本的東西。
L — 里氏替換原則 (Liskov Substitution)
換掉一個零件,整台機器還能正常運作。
I — 介面隔離原則 (Interface Segregation)
不要一本「超大菜單」,要分成小本子,清楚又好用。
D — 依賴反轉原則 (Dependency Inversion)
插頭對準插座,不管是插電腦還是插充電器都能用
單一職責原則 = 一個角色(Actor 或 Agent)只要做好一件事。
就像每個班級幹部或同學都有分工。
每個 Agent 專心一件事,就不會亂掉。
flowchart TD
班長 -->|管理秩序| 管秩序
小明 -->|算數學題| 算數
小芳 -->|蓋章打勾| 檢查作業
小美 -->|寫日記| 寫班級日誌
開學後學會的第一件事。
隨著功課越來越多,一開始阿吉只用腦袋記,
回家一開心吃點心,就忘記了。
就像寫在白板,一擦就沒了。
後來他學會寫進 聯絡簿,
就像把程式資料存到 資料庫(Supabase),
安全又能隨時翻出來看,不再怕忘記。
const articleRepo = envReadyForSupabase()
? new SupabaseArticleRepository()
: new InMemoryArticleRepositoryAsync();
const blogService = new BlogService(articleRepo);
export const articleController = new ArticleController(blogService);
程式裡有一個「容器 (container)」,
它的工作就像是「大總管」,
決定要用哪一種「資料盒子」:
測試 → 用假的(InMemory)。
真實 → 用真的(Supabase)。
好處: